package cn.cdeden.knowledge.service.impl;

import cn.cdeden.knowledge.domain.dto.DictDetailDto;
import cn.cdeden.knowledge.domain.dto.SysParametersConfigDto;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.AllArgsConstructor;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.List;
import java.util.concurrent.TimeUnit;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import cn.cdeden.knowledge.mapper.SysParametersConfigMapper;
import cn.cdeden.knowledge.domain.SysParametersConfig;
import cn.cdeden.knowledge.service.SysParametersConfigService;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

@Service
@AllArgsConstructor
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
public class SysParametersConfigServiceImpl extends ServiceImpl<SysParametersConfigMapper, SysParametersConfig> implements SysParametersConfigService{

//    private final DictDetailService dictDetailService;

    @Override
    public SysParametersConfigDto getByCode(String code, String type, boolean mandatory) {
//        if (StringUtils.isBlank(type) && judgmentTypeData(type)) {
//            throw new RuntimeException("参数异常");
//        }
//        String s = KEY_ + ":" + type + ":" + code;
//        SysParametersConfigDto convert = null;
//        Object o = null;
//        if (!mandatory) {
//            o = redisUtils.get(s);
//        }
//
//        if (ObjectUtils.isEmpty(o)) {
//            LambdaQueryWrapper<SysParametersConfig> wrapper = new LambdaQueryWrapper<SysParametersConfig>()
//                .eq(SysParametersConfig::getConfigCode, code)
//                .eq(SysParametersConfig::getConfigType, type);
//            SysParametersConfig one = this.getOne(wrapper);
//            if (ObjectUtils.isNotEmpty(one)) {
//                convert = ConvertUtil.convert(one, SysParametersConfigDto.class);
//            } else {
//                SysParametersConfig defaultEnums = SysConfigDefaultParameters.find(code, type);
//                if (defaultEnums == null) {
//                    throw new BadRequestException("该类型无法恢复默认配置,code:"+code+",type:"+type+"");
//                }
//                convert = ConvertUtil.convert(defaultEnums, SysParametersConfigDto.class);
//                //添加有默认值的api
//                try {
//                    this.save(ConvertUtil.convert(convert, SysParametersConfig.class));
//                } catch (Exception e) {
//                }
//                convert.setCreateId(null);
//                convert.setCreateBy(null);
//                convert.setCreateTime(null);
//                convert.setUpdateId(null);
//                convert.setUpdateId(null);
//                convert.setUpdateBy(null);
//                convert.setUpdateTime(null);
//            }
//            boolean set = redisUtils.set(s, JSONObject.toJSONString(convert), 8L, TimeUnit.HOURS);
//        } else {
//            convert = JSONObject.parseObject(o.toString(), SysParametersConfigDto.class);
//        }
//        return convert;
        return null;
    }

//    @Override
//    public boolean judgmentTypeData(String type) {
////        List<DictDetailDto> dictByName = dictDetailService.getDictByName(CONFIG);
////        for (DictDetailDto dictDetailDto : dictByName) {
////            if (StringUtils.equals(type, dictDetailDto.getValue())) {
////                return true;
////            }
////        }
////        return false;
//        return false;
//    }
}
